package com.finance.framework.lang;

import lombok.Data;

import java.io.Serializable;

/**
 * 分页查询 分页bean
 */
@Data
public class Page  implements Serializable {
    /**默认分页大小*/
    private static final int DEFAULT_SIZE = 10;
    /** 页码，默认是第一页 */
    private int pageNo = 0;
    /** 每页显示的记录数，默认是15 */
    private int pageSize = DEFAULT_SIZE;
    /** 总记录数 */
    private int totalRecord;
    /** 总页数 */
    private int totalPage;
    /** 排序信息 */
    private String sortInfo;
    /**是否不分页 加载全部*/
    private boolean loadAll = false;
    /**查询参数对象*/
    private Object params;

    public void calculateTotal(int totalRecord) {
        this.totalRecord = totalRecord;
        // 在设置总页数的时候计算出对应的总页数，在下面的三目运算中加法拥有更高的优先级，所以最后可以不加括号。
        this.totalPage = totalRecord % pageSize == 0 ? totalRecord / pageSize : totalRecord / pageSize + 1;
    }

    public static Page getInstance(PageReq pageReq){
        Page page = new Page();
        page.setPageSize(pageReq.getPageSize());
        page.setPageNo(pageReq.getPageNo());
        page.setSortInfo(pageReq.getSortString());
        return page;
    }
    public static Page getInstance(int pageSize,int pageNo){
        Page page = new Page();
        page.setPageSize(pageSize);
        page.setPageNo(pageNo);
         return page;
    }

    @Override
    public String toString(){
        return String.format("[pageNo:%d,pageSize:%d]", this.pageNo, this.pageSize);
    }
}
